
print("--------------7.3 使用 while 循环处理列表和字典-----------------")
# for 循环是一种遍历列表的有效方式，但不应该在 for 循环中修改列表，
# 否则将导致 Python 难以跟踪其中的元素。# 要在遍历列表的同时修改它，可使用 while 循环。
# 通过将 while 循环与列表和字典结合起来使用，可收集、存储并组织大量的输入，供以后查看和使用。

print("--------------7.3.1 在列表之间移动元素-----------------")
# 首先，创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []

# 验证每个用户，直到没有未验证用户为止
# 将每个经过验证的用户都移到已验证用户列表中
while unconfirmed_users:
    current_user = unconfirmed_users.pop()

    print("Verifying user: " + current_user.title())
    confirmed_users.append(current_user)

# 显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
    print(confirmed_user.title())

print("--------------7.3.2 删除为特定值的所有列表元素-----------------")
# 假设有一个包含宠物的列表，其中包含多个不同类型的宠物，如狗、猫和老鼠。
# 要将宠物 'cat' 都删除，可运行一个 while 循环，直到列表中不再包含值 'cat'，就像这样：
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)

while 'cat' in pets:
    pets.remove('cat')

print(pets)

print("--------------7.3.3 使用用户输入来填充字典-----------------")
# 可使用 while 循环提示用户输入任意数量的信息。
responses = {}

# 设置一个标志，指出调查是否继续
polling_active = True   

while polling_active:
    # 提示输入被调查者的名字和回答
    name = input("\nWhat is your name? ")
    response = input("Which mountain would you like to climb someday? ")

    # 将答卷存储在字典中
    responses[name] = response

    # 看看是否还有人要参与调查
    repeat = input("Would you like to let another person respond? (yes/ no) ")
    if repeat == 'no':
        polling_active = False
print(responses)
# 调查结束，显示结果
print("\n--- Poll Results ---")
for name, response in responses.items():
    print(name + " would like to climb " + response + ".")